home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / dev / obero / oberon_lib.lha / oberon-a / source1.lha / source / 3rdParty / IntuiSup.mod < prev    next >
Text File  |  1994-08-08  |  29KB  |  854 lines

  1. (***************************************************************************
  2.  
  3.      $RCSfile: IntuiSup.mod $
  4.   Description: Interface to intuisup.library
  5.  
  6.    Created by: fjc (Frank Copeland)
  7.     $Revision: 2.5 $
  8.       $Author: fjc $
  9.         $Date: 1994/08/08 16:05:28 $
  10.  
  11.   Copyright © 1994, Frank Copeland.
  12.   This file is part of the Oberon-A Library.
  13.   See Oberon-A.doc for conditions of use and distribution.
  14.  
  15. ***************************************************************************)
  16.  
  17. MODULE IntuiSup;
  18.  
  19. (*
  20. ** $C- CaseChk       $I- IndexChk  $L+ LongAdr   $N- NilChk
  21. ** $P- PortableCode  $R- RangeChk  $S- StackChk  $T- TypeChk
  22. ** $V- OvflChk       $Z- ZeroVars
  23. *)
  24.  
  25. IMPORT
  26.   E := Exec, G := Graphics, DF := DiskFont, I := Intuition,
  27.   SYS := SYSTEM;
  28.  
  29.  
  30. (* $Revision Header *** Header built automatically - do not edit! ***********
  31.  *
  32.  *      (C) Copyright 1991 by Torsten Jürgeleit
  33.  *
  34.  *      Name .....: intuisup.h
  35.  *      Created ..: Sunday 22-Dec-91 20:34:40
  36.  *      Revision .: 14
  37.  *
  38.  *      Date        Author                 Comment
  39.  *      =========   ====================   ====================
  40.  *      08-Aug-92   Torsten Jürgeleit      new flags
  41.  *                                         gadgetDataFlagInputCENTER/RIGHT
  42.  *      06-Aug-92   Torsten Jürgeleit      new flag
  43.  *                                         gadgetDataFlagListviewEntryCOLOR
  44.  *      28-Jul-92   Torsten Jürgeleit      different centering types for
  45.  *                                         requesters
  46.  *      28-Jul-92   Torsten Jürgeleit      open window centered over position
  47.  *                                         of mouse pointer
  48.  *      11-Jul-92   Torsten Jürgeleit      use RAWKEY instead of VANILLAKEY
  49.  *                                         for gadget hotkeys
  50.  *      01-Jul-92   Torsten Jürgeleit      added support for custom slider
  51.  *                                         knob image
  52.  *      21-Jun-92   Torsten Jürgeleit      check for compiler and define
  53.  *                                         differences
  54.  *      03-Jun-92   Torsten Jürgeleit      alternate color for menu item texts
  55.  *      14-Apr-92   Torsten Jürgeleit      neq flag gadgetDataFlagNoCLEAR
  56.  *      12-May-92   Torsten Jürgeleit      text colors for IClearWindow()
  57.  *      30-Apr-92   Torsten Jürgeleit      rasters for IClearWindow() and
  58.  *                                         requesters
  59.  *      01-Apr-92   Torsten Jürgeleit      changed parameter size of
  60.  *                                         IModifyGadget() for new value of
  61.  *                                         useCurrentValue 31
  62.  *      31-Mar-92   Torsten Jürgeleit      changed useCurrentValue from ~0L
  63.  *                                         to 31
  64.  *      21-Mar-92   Torsten Jürgeleit      flags for converting numbers with
  65.  *                                         string gadgets
  66.  *      22-Dec-91   Torsten Jürgeleit      Created this file!
  67.  *
  68.  ****************************************************************************
  69.  *
  70.  *      Includes, defines, structures, prototypes and pragmas for IntuiSup
  71.  *      library
  72.  *
  73.  * $Revision Header ********************************************************)
  74.  
  75.  
  76. CONST
  77.  
  78.         (* Defines for library *)
  79.  
  80.   Name    * = "intuisup.library";
  81.   intuisupName * = Name;
  82.   version * = 4;
  83.  
  84.         (* Defines for render *)
  85.  
  86.   maxRenderImages = 11;
  87.  
  88.   riInnerWindow * = 0; (* use upper left corner of inner window as location (0,0) *)
  89.   riBackFill    * = 1; (* fill window back ground with different color *)
  90.   riAvailFonts  * = 2; (* scan available fonts and use this list for IAskFont/IOpenFont *)
  91.  
  92. TYPE
  93.  
  94.   RenderInfoPtr* = CPOINTER TO RenderInfo;
  95.   RenderInfo* = RECORD
  96.     id                   * : LONGINT; (* id = 'ISUP' *)
  97.     screen               * : I.ScreenPtr;
  98.     screenWidth          * : E.UWORD;
  99.     screenHeight         * : E.UWORD;
  100.     screenDepth          * : SHORTINT;
  101.     windowBorderTop      * : SHORTINT;
  102.     windowBorderLeft     * : SHORTINT;
  103.     windowBorderRight    * : SHORTINT;
  104.     windowBorderBottom   * : SHORTINT;
  105.     highlightPen         * : SHORTINT;
  106.     shadowPen            * : SHORTINT;
  107.     textPen1             * : SHORTINT;
  108.     textPen2             * : SHORTINT;
  109.     backPen              * : SHORTINT;
  110.     flags                * : E.WSET;
  111.     imageDataSize        * : E.ULONG;
  112.     imageData            * : E.APTR;
  113.     availFontsHeaderSize * : E.ULONG;
  114.     availFontsHeader     * : DF.AvailFontsHeaderPtr;
  115.     textFont             * : G.TextFontPtr;
  116.     textAttr             * : G.TextAttr;
  117.     images               * : ARRAY maxRenderImages OF I.Image;
  118.   END; (* RenderInfo *)
  119.  
  120. CONST
  121.  
  122.   dataEnd * = 0;          (* mark end of data arry *)
  123.  
  124.   id *      = 49535550H;  (* "ISUP" *)
  125.  
  126.         (* Defines for open window flags *)
  127.  
  128.   owCenterScreen * = 0;   (* center window on screen *)
  129.   owRenderPens   * = 1;   (* use render pens for detail and backfill pen *)
  130.   owCenterMouse  * = 2;   (* center window over current position of mouse pointer *)
  131.  
  132.         (* Defines for clear window flags *)
  133.  
  134.   cwCustomDrawMode * = 0; (* don't change draw mode *)
  135.   cwCustomColor    * = 1; (* don't change background color *)
  136.   cwNormalColor    * = 2; (* use normal background color *)
  137.   cwUseRaster      * = 3; (* use standard raster for window background *)
  138.   cwAbsolutePos    * = 4; (* don't add window border offset to given upper left position *)
  139.   cwText1Color     * = 5; (* use text color 1 *)
  140.   cwText2Color     * = 6; (* use text color 2 *)
  141.  
  142.         (* Defines for texts *)
  143.  
  144.   text           * = 1;
  145.   numUnsignedDec * = 2;
  146.   numSignedDec   * = 3;
  147.   numHex         * = 4;
  148.   numBin         * = 5;
  149.  
  150.   tdBold             * = 0;
  151.   tdItalic           * = 1;
  152.   tdUnderlined       * = 2;
  153.   tdAbsolutePos      * = 3;  (* absolute text pos given - don't add border offsets *)
  154.   tdCenter           * = 4;  (* center text with in window width *)
  155.   tdPlaceLeft        * = 5;  (* place text left of given left edge *)
  156.   tdColor2           * = 6;  (* use 2nd text render pen *)
  157.   tdComplement       * = 7;  (* use complement of front and back pen *)
  158.   tdBackFill         * = 8;  (* use draw mode JAM2 to fill text background with riBackPen *)
  159.   tdNoPrint          * = 9;  (* don't print text - only calc width *)
  160.   tdNumIdentifier    * = 10; (* convert number with normal (assmebler style) leading identifier `$' or `%' *)
  161.   tdNumCStyle        * = 11; (* use C style identifier `0x' for hex numbers *)
  162.   tdNumLeadingZeroes * = 12; (* convert number includeing leading zeroes *)
  163.   tdNumUpperCase     * = 13; (* use upper case characters for hex number *)
  164.  
  165.   cIdentifier    * = 0; (* convert number with normal (assmebler style) leading identifier `$' or `%' *)
  166.   cCStyle        * = 1; (* use C style identifier `0x' for hex numbers *)
  167.   cLeadingZeroes * = 2; (* convert number includeing leading zeroes *)
  168.   cUpperCase     * = 3; (* use upper case characters for hex number *)
  169.  
  170. TYPE
  171.  
  172.         (* Structures for texts *)
  173.  
  174.   TextDataPtr * = CPOINTER TO TextData;
  175.   TextData * = RECORD
  176.     type     * : E.UWORD;
  177.     flags    * : E.WSET;
  178.     leftEdge * : INTEGER;
  179.     topEdge  * : INTEGER;
  180.     text     * : E.STRPTR;
  181.     textAttr * : G.TextAttrPtr;
  182.   END; (* TextData *)
  183.   TextDataListPtr * = CPOINTER TO ARRAY 32767 OF TextData;
  184.  
  185. CONST
  186.  
  187.         (* Defines for borders *)
  188.  
  189.   box1Out * = 1;
  190.   box1In  * = 2;
  191.   box2Out * = 3;
  192.   box2In  * = 4;
  193.  
  194. TYPE
  195.  
  196.         (* Structures for borders *)
  197.  
  198.   BorderDataPtr * = CPOINTER TO BorderData;
  199.   BorderData * = RECORD
  200.     type * : E.UWORD;
  201.     leftEdge * : INTEGER;
  202.     topEdge * : INTEGER;
  203.     width * : E.UWORD;
  204.     height * : E.UWORD;
  205.   END; (* BorderData *)
  206.   BorderDataListPtr * = CPOINTER TO ARRAY 32767 OF BorderData;
  207.  
  208. CONST
  209.  
  210.         (* Defines for gadgets *)
  211.  
  212.   button         * = 1;  (* button gadget *)
  213.   check          * = 2;  (* checkbox gadget *)
  214.   mx             * = 3;  (* mutual exclude gadget *)
  215.   string         * = 4;  (* string input gadget *)
  216.   integer        * = 5;  (* integer input gadget *)
  217.   slider         * = 6;  (* slider gadget *)
  218.   scroller       * = 7;  (* scroller gadget *)
  219.   cycle          * = 8;  (* cycle gadget *)
  220.   count          * = 9;  (* count gadget *)
  221.   listView       * = 10; (* list view gadget *)
  222.   palette        * = 11; (* palette gadget *)
  223.  
  224.   gdDisabled             * = 0;  (* gadget disabled (ghosted) - default enabled *)
  225.   gdNoBorder             * = 1;  (* no gadget border - default with border *)
  226.   gdHighComp             * = 2;  (* highliting by complement - default by select border *)
  227.   gdOrientationVert      * = 3;  (* vertical orientation - default horizontal *)
  228.   gdHotKey               * = 4;  (* hotkey given - default none *)
  229.   gdNoTextOutput         * = 5;  (* no text output, but scan gadget text for hotkey *)
  230.   gdTextLeft             * = 6;  (* place text left of gadget *)
  231.   gdTextRight            * = 7;  (* place text right of gadget *)
  232.   gdTextAbove            * = 8;  (* place text above of gadget *)
  233.   gdTextBelow            * = 9;  (* place text below of gadget *)
  234.   gdTextColor2           * = 10; (* use 2nd text render pen for gadget text *)
  235.   gdButtonToggle         * = 11; (* button gadgets: toggle button - default no toggle *)
  236.   gdButtonImage          * = 12; (* button gadgets: render image - default no image *)
  237.   gdInputAutoActivate    * = 13; (* input gadgets: acivate after GADGETUP next or previous input gadget *)
  238.   gdStringUnsignedDec    * = 14; (* string gadgets: input default no pointer to string but an unsigned decimal number *)
  239.   gdStringSignedDec      * = 15; (* string gadgets: input default no pointer to string but an signed decimal number *)
  240.   gdStringHex            * = 16; (* string gadgets: input default no pointer to string but an hex number *)
  241.   gdStringBin            * = 17; (* string gadgets: input default no pointer to string but an binary number *)
  242.   gdScrollerNoArrows     * = 18; (* scroller gadget: no arrows - default with arrows *)
  243.   gdCountSignedDec       * = 19; (* count gadget: signed dec - default unsigned dec *)
  244.   gdListviewReadOnly     * = 20; (* list view gadget: read only - default selection enabled *)
  245.   gdListviewShowSelected * = 21; (* list view gadget: show last selected entry - default no *)
  246.   gdPaletteNoIndicator   * = 22; (* palette gadget: no current color indicator - default with indicator *)
  247.   gdPaletteIndicatorTop  * = 23; (* palette gadget: place indicator at top - default at left *)
  248.   gdMovePointer          * = 24; (* move mouse pointer to center of this gadget *)
  249.   gdNoClear              * = 25; (* don't clear area occupied by this gadget before drawing *)
  250.   gdSliderImage          * = 26; (* kludge to define image for knob of proportional gadget in gdTextAttr (if text then default TextAttr used) *)
  251.   gdListviewEntryColor   * = 27; (* list view gadget: if first char of an entry text equals <Ctrl A> ($01) then this char will be skipped and the rest of this entry text will be printed in a different color *)
  252.   gdInputCenter          * = 28; (* input gadgets: center input string within gadget *)
  253.   gdInputRight           * = 29; (* input gadgets: right justify input string within gadget *)
  254.  
  255.   giButton       * = { I.idcmpGadgetUp,   I.idcmpRawKey };
  256.   giCheck        * = { I.idcmpGadgetDown, I.idcmpRawKey };
  257.   giMX           * = { I.idcmpGadgetDown, I.idcmpRawKey };
  258.   giString       * = { I.idcmpGadgetUp,   I.idcmpRawKey };
  259.   giInteger      * = { I.idcmpGadgetUp,   I.idcmpRawKey };
  260.   giSlider       * =
  261.     { I.idcmpGadgetUp,   I.idcmpMouseMove, I.idcmpRawKey };
  262.   giScroller     * =
  263.     { I.idcmpGadgetDown, I.idcmpGadgetUp,  I.idcmpMouseMove,
  264.       I.idcmpIntuiTicks, I.idcmpRawKey };
  265.   giCycle        * = { I.idcmpGadgetUp,   I.idcmpRawKey };
  266.   giCount        * =
  267.     { I.idcmpGadgetDown, I.idcmpGadgetUp,  I.idcmpMouseMove,
  268.       I.idcmpRawKey };
  269.   giListview     * =
  270.     { I.idcmpGadgetDown, I.idcmpGadgetUp,  I.idcmpMouseMove,
  271.       I.idcmpIntuiTicks, I.idcmpRawKey };
  272.   giPalette      * = { I.idcmpGadgetUp,   I.idcmpRawKey };
  273.   giAll          * =
  274.     { I.idcmpGadgetDown, I.idcmpGadgetUp,  I.idcmpMouseMove,
  275.       I.idcmpIntuiTicks, I.idcmpRawKey };
  276.  
  277.   useCurrentValue       * = 80000000H;
  278.     (* used for setgadgetattributes() to indicate data for which to use
  279.        the current value *)
  280.  
  281. TYPE
  282.  
  283.   GadgetList * = CPOINTER TO RECORD END;
  284.   TextArrayPtr * = CPOINTER TO ARRAY 32767 OF E.STRPTR;
  285.  
  286.         (* Structures for gadgets *)
  287.  
  288.   GadgetDataPtr * = CPOINTER TO GadgetData;
  289.   GadgetData * = RECORD
  290.     type     * : E.ULONG;
  291.     flags    * : SET;
  292.     leftEdge * : E.UWORD;
  293.     topEdge  * : E.UWORD;
  294.     width    * : E.UWORD;
  295.     height   * : E.UWORD;
  296.     text     * : E.STRPTR;
  297.     textAttr * : G.TextAttrPtr;
  298.   END; (* GadgetData *)
  299.  
  300.   StandardDataPtr * = CPOINTER TO StandardData;
  301.   StandardData * = RECORD (GadgetData) (* standard data struct *)
  302.     data1 * : LONGINT;
  303.     data2 * : LONGINT;
  304.     data3 * : E.APTR;
  305.   END; (* StandardData *)
  306.  
  307.   ButtonDataPtr * = CPOINTER TO ButtonData;
  308.   ButtonData * = RECORD (GadgetData) (* for button gadgets *)
  309.     selected     * : E.ULONG;    (* selection state for toggle buttons - ZERO * = unselected, non ZERO * = selected *)
  310.     normalRender * : I.ImagePtr; (* normal render image *)
  311.     selectRender * : I.ImagePtr; (* select render image *)
  312.   END; (* ButtonData *)
  313.  
  314.   CheckDataPtr * = CPOINTER TO CheckData;
  315.   CheckData * = RECORD (GadgetData) (* for check gadgets *)
  316.     selected * : E.ULONG; (* selection state - ZERO * = unselected, non ZERO * = selected *)
  317.     pad1     * : E.ULONG;
  318.     pad2     * : E.ULONG;
  319.   END; (* CheckData *)
  320.  
  321.   MXDataPtr * = CPOINTER TO MXData;
  322.   MXData * = RECORD (GadgetData) (* for mutual exclude gadgets *)
  323.     spacing     * : E.ULONG;      (* pixel spacing between MX gadgets *)
  324.     activeEntry * : E.ULONG;      (* num of active entry from text array *)
  325.     textArray   * : TextArrayPtr; (* ptr to MX text ptr array *)
  326.   END; (* MXData *)
  327.  
  328.   InputDataPtr * = CPOINTER TO InputData;
  329.   InputData * = RECORD (GadgetData) (* for string and integer gadgets *)
  330.     len          * : E.ULONG; (* len of input buffer *)
  331.     activateNext * : E.UWORD; (* num of next string/num gadget to activate *)
  332.     activatePrev * : E.UWORD; (* num of previous string/num gadget to activate *)
  333.     default      * : E.APTR;  (* string: default text [syntax: "text"] *)
  334.                               (* integer: default number [syntax: (VOID * )num] *)
  335.   END; (* InputData *)
  336.  
  337.   SliderDataPtr * = CPOINTER TO SliderData;
  338.   SliderData * = RECORD (GadgetData) (* for slider gadgets *)
  339.     min   * : LONGINT; (* min level *)
  340.     max   * : LONGINT; (* max level *)
  341.     level * : LONGINT; (* current slider level *)
  342.   END; (* SliderData *)
  343.  
  344.   ScrollerDataPtr * = CPOINTER TO ScrollerData;
  345.   ScrollerData * = RECORD (GadgetData) (* for scroller gadgets *)
  346.     visible * : E.ULONG; (* visible entries *)
  347.     total   * : E.ULONG; (* total entries *)
  348.     top     * : E.ULONG; (* current top entry *)
  349.   END; (* ScrollerData *)
  350.  
  351.   CycleDataPtr * = CPOINTER TO CycleData;
  352.   CycleData * = RECORD (GadgetData) (* for cycle gadget *)
  353.     spacing   * : E.ULONG;      (* pixel spacing between pop up cycle list entries *)
  354.     active    * : E.ULONG;      (* num of current cycle text ptr array entry *)
  355.     textArray * : TextArrayPtr; (* ptr to cycle text ptr array *)
  356.   END; (* CycleData *)
  357.  
  358.   CountDataPtr * = CPOINTER TO CountData;
  359.   CountData * = RECORD (GadgetData) (* for count gadget *)
  360.     min   * : E.ULONG; (* min value *)
  361.     max   * : E.ULONG; (* max value *)
  362.     value * : E.ULONG; (* current count value *)
  363.   END; (* CountData *)
  364.  
  365.   ListViewDataPtr * = CPOINTER TO ListViewData;
  366.   ListViewData * = RECORD (GadgetData) (* for list view gadget *)
  367.     spacing * : E.ULONG;   (* pixel spacing between list view entries *)
  368.     top     * : E.ULONG;   (* current top entry *)
  369.     list    * : E.ListPtr; (* current list ptr *)
  370.   END; (* ListViewData *)
  371.  
  372.   PaletteDataPtr * = CPOINTER TO PaletteData;
  373.   PaletteData * = RECORD (GadgetData) (* for palette gadget *)
  374.     depth       * : E.ULONG; (* num of bitplanes for palette *)
  375.     colorOffset * : E.ULONG; (* first color of palette *)
  376.     activeColor * : E.ULONG; (* selected color *)
  377.   END; (* SpecialData *)
  378.  
  379. CONST
  380.  
  381.         (* Defines for auto request *)
  382.  
  383.   arBackFill       * = 0;
  384.   arRenderPens     * = 1;
  385.   arTextCenter     * = 2;
  386.   arTextColor2     * = 3;
  387.   arHotKey         * = 4;
  388.   arBeep           * = 5;
  389.   arMovePointerPos * = 6;
  390.   arMovePointerNeg * = 7;
  391.   arDrawRaster     * = 8; (* draw raster around text area *)
  392.   arCenterMouse    * = 9; (* center last gadget of auto requester over current position of mouse pointer *)
  393.  
  394.         (* Defines for requester *)
  395.  
  396.   rdBackFill     * = 0;
  397.   rdRenderPens   * = 1;
  398.   rdInnerWindow  * = 2;
  399.   rdAvailFonts   * = 3;
  400.   rdCenterScreen * = 4; (* center requester on window's screen *)
  401.   rdDragGadget   * = 5;
  402.   rdDepthGadget  * = 6;
  403.   rdDrawRaster   * = 7; (* draw raster between FIRST BORDER and window border - FIRST BORDER will not be used further *)
  404.   rdCenterWindow * = 8; (* center requester on window *)
  405.   rdCenterMouse  * = 9; (* center requester over current position of mouse pointer *)
  406.  
  407. TYPE
  408.  
  409.         (* Structures for requester *)
  410.  
  411.   RequesterListPtr * = CPOINTER TO RequesterList;
  412.   RequesterList * = RECORD
  413.     renderInfo * : RenderInfoPtr;
  414.     window     * : I.WindowPtr;   (* window requester displayed on *)
  415.     reqWindow  * : I.WindowPtr;   (* window of requester *)
  416.     gadgetList * : GadgetList;    (* requester gadgets *)
  417.     id         * : LONGINT;       (* id = 'ISUP' *)
  418.     flags      * : SET;
  419.     mouseX     * : INTEGER;       (* saved position of mouse pointer before displaying requester *)
  420.     mouseY     * : INTEGER;       (* saved position of mouse pointer before displaying requester *)
  421.   END; (* RequesterList *)
  422.  
  423.   RequesterDataPtr * = CPOINTER TO RequesterData;
  424.   RequesterData * = RECORD
  425.     leftEdge * : INTEGER;
  426.     topEdge  * : INTEGER;
  427.     width    * : INTEGER;
  428.     height   * : INTEGER;
  429.     flags    * : SET;
  430.     title    * : E.STRPTR;
  431.     texts    * : TextDataPtr;
  432.     borders  * : BorderDataPtr;
  433.     gadgets  * : GadgetDataPtr;
  434.   END; (* RequesterData *)
  435.  
  436. CONST
  437.  
  438.         (* Defines for menus *)
  439.  
  440.   title   * = 1;
  441.   item    * = 2;
  442.   subItem * = 3;
  443.  
  444.   mdDisabled   * = 0; (* disable menu or menu item *)
  445.   mdAttribute  * = 1; (* attribute menu item *)
  446.   mdSelected   * = 2; (* selected attribute menu item *)
  447.   mdEmptyLine  * = 3; (* insert empty line before this item *)
  448.   mdHighNone   * = 4; (* no highliting *)
  449.   mdHighBox    * = 5; (* highliting with box, otherwise with complement *)
  450.   mdTextColor2 * = 6; (* alternate color for item text *)
  451.  
  452. TYPE
  453.  
  454.   MenuList * = CPOINTER TO RECORD END;
  455.  
  456.         (* Structures for menus *)
  457.  
  458.   MenuDataPtr * = CPOINTER TO MenuData;
  459.   MenuData * = RECORD
  460.     type          * : E.UWORD;
  461.     flags         * : E.WSET;
  462.     name          * : E.STRPTR;
  463.     commandKey    * : E.STRPTR;
  464.     mutualExclude * : SET;
  465.   END; (* MenuData *)
  466.   MenuDataListPtr * = CPOINTER TO ARRAY 32767 OF MenuData;
  467.  
  468. CONST
  469.  
  470.         (* Defines for text file *)
  471.  
  472.   tfTrimLine         * = 0; (* strip leading and trailing white space *)
  473.   tfSkipComments     * = 1; (* skip C style comments *)
  474.   tfSkipEmptyLines   * = 2; (* skip empty lines *)
  475.   tfLineContinuation * = 3; (* continue line with last character '\' in next line *)
  476.  
  477.   normal           * = 0;
  478.   eof              * = 1;
  479.  
  480.   noFileData       * = -1;
  481.   lineTooLong      * = -2;
  482.   noCommentEnd     * = -3;
  483.   readFailed       * = -4;
  484.  
  485. TYPE
  486.  
  487.         (* Structures for text file *)
  488.  
  489.   FileDataPtr * = CPOINTER TO FileData;
  490.   FileData * = RECORD
  491.     line    * : E.STRPTR;
  492.     lineLen * : E.UWORD;
  493.     lineNum * : E.UWORD;
  494.   END; (* FileData *)
  495.  
  496. TYPE
  497.  
  498.   PtrData * = CPOINTER TO ARRAY 32767 OF INTEGER;
  499.  
  500.         (* Structures for mouse pointer *)
  501.  
  502.   PointerDataPtr * = CPOINTER TO PointerData;
  503.   PointerData * = RECORD
  504.     width   * : E.UBYTE;
  505.     height  * : E.UBYTE;
  506.     xOffset * : SHORTINT;
  507.     yOffset * : SHORTINT;
  508.     data    * : PtrData;
  509.   END; (* PointerData *)
  510.  
  511.  
  512. (* --- Library Base variable -------------------------------------------- *)
  513.  
  514. TYPE
  515.  
  516.   IntuiSupBasePtr * = CPOINTER TO IntuiSupBase;
  517.   IntuiSupBase * = RECORD (E.Library) END;
  518.  
  519. VAR
  520.  
  521.   base *  : IntuiSupBasePtr;
  522.  
  523.  
  524. (* --- Library Functions ------------------------------------------------ *)
  525.  
  526.  
  527. LIBCALL (base : IntuiSupBasePtr) GetRenderInfo *
  528.   ( screen [8] : I.ScreenPtr;
  529.     flags  [0] : SET )
  530.   : RenderInfoPtr;
  531.   -30;
  532. LIBCALL (base : IntuiSupBasePtr) FreeRenderInfo *
  533.   ( ri [8] : RenderInfoPtr );
  534.   -36;
  535. LIBCALL (base : IntuiSupBasePtr) OpenWindow *
  536.   ( ri     [8] : RenderInfoPtr;
  537.     VAR nw [9] : I.NewWindow;
  538.     flags  [0] : SET )
  539.   : I.WindowPtr;
  540.   -42;
  541. LIBCALL (base : IntuiSupBasePtr) ClearWindow *
  542.   ( ri       [8] : RenderInfoPtr;
  543.     win      [9] : I.WindowPtr;
  544.     leftedge [0] : E.UWORD;
  545.     topedge  [1] : E.UWORD;
  546.     width    [2] : E.UWORD;
  547.     height   [3] : E.UWORD;
  548.     flags    [4] : SET );
  549.   -48;
  550. LIBCALL (base : IntuiSupBasePtr) CloseWindow *
  551.   ( win         [8] : I.WindowPtr;
  552.     morewindows [0] : E.LBOOL );
  553.   -54;
  554. LIBCALL (base : IntuiSupBasePtr) AvailFonts *
  555.   ( ri [8] : RenderInfoPtr )
  556.   : DF.AvailFontsHeaderPtr;
  557.   -60;
  558. LIBCALL (base : IntuiSupBasePtr) AskFont *
  559.   ( ri     [8] : RenderInfoPtr;
  560.     VAR ta [9] : G.TextAttr )
  561.   : G.TextAttrPtr;
  562.   -66;
  563. LIBCALL (base : IntuiSupBasePtr) OpenFont *
  564.   ( ri     [8] : RenderInfoPtr;
  565.     VAR ta [9] : G.TextAttrPtr )
  566.   : G.TextFontPtr;
  567.   -72;
  568.  
  569. LIBCALL (base : IntuiSupBasePtr) DisplayTextsA *
  570.   ( ri       [8] : RenderInfoPtr;
  571.     win      [9] : I.WindowPtr;
  572.     td      [10] : ARRAY OF TextData;
  573.     hoffset  [0] : INTEGER;
  574.     voffset  [1] : INTEGER;
  575.     lta     [11] : TextArrayPtr );
  576.   -78;
  577. LIBCALL (base : IntuiSupBasePtr) DisplayTextsPtr *
  578.   ( ri       [8] : RenderInfoPtr;
  579.     win      [9] : I.WindowPtr;
  580.     td      [10] : TextDataListPtr;
  581.     hoffset  [0] : INTEGER;
  582.     voffset  [1] : INTEGER;
  583.     lta     [11] : TextArrayPtr );
  584.   -78;
  585. LIBCALL (base : IntuiSupBasePtr) PrintText *
  586.   ( ri        [8] : RenderInfoPtr;
  587.     win       [9] : I.WindowPtr;
  588.     text     [10] : ARRAY OF CHAR;
  589.     leftedge  [0] : E.UWORD;
  590.     topedge   [1] : E.UWORD;
  591.     type      [2] : E.UWORD;
  592.     flags     [3] : SET;
  593.     textattr [11] : G.TextAttrPtr )
  594.   : E.UWORD;
  595.   -84;
  596. LIBCALL (base : IntuiSupBasePtr) ConvertUnsignedDec *
  597.   ( num        [0] : E.ULONG;
  598.     VAR buffer [8] : ARRAY OF CHAR;
  599.     flags      [1] : SET )
  600.   : E.UWORD;
  601.   -90;
  602. LIBCALL (base : IntuiSupBasePtr) ConvertSignedDec *
  603.   ( num        [0] : LONGINT;
  604.     VAR buffer [8] : ARRAY OF CHAR;
  605.     flags      [1] : SET )
  606.   : E.UWORD;
  607.   -96;
  608. LIBCALL (base : IntuiSupBasePtr) ConvertHex *
  609.   ( num        [0] : E.ULONG;
  610.     VAR buffer [8] : ARRAY OF CHAR;
  611.     flags      [1] : SET )
  612.   : E.UWORD;
  613.   -102;
  614. LIBCALL (base : IntuiSupBasePtr) ConvertBin *
  615.   ( num        [0] : E.ULONG;
  616.     VAR buffer [8] : ARRAY OF CHAR;
  617.     flags      [1] : SET )
  618.   : E.UWORD;
  619.   -108;
  620.  
  621. LIBCALL (base : IntuiSupBasePtr) DisplayBordersA *
  622.   ( ri      [8] : RenderInfoPtr;
  623.     win     [9] : I.WindowPtr;
  624.     bd     [10] : ARRAY OF BorderData;
  625.     hoffset [0] : INTEGER;
  626.     voffset [1] : INTEGER );
  627.   -114;
  628. LIBCALL (base : IntuiSupBasePtr) DisplayBordersPtr *
  629.   ( ri      [8] : RenderInfoPtr;
  630.     win     [9] : I.WindowPtr;
  631.     bd     [10] : BorderDataListPtr;
  632.     hoffset [0] : INTEGER;
  633.     voffset [1] : INTEGER );
  634.   -114;
  635. LIBCALL (base : IntuiSupBasePtr) DrawBorder *
  636.   ( ri       [8] : RenderInfoPtr;
  637.     win      [9] : I.WindowPtr;
  638.     leftedge [0] : E.UWORD;
  639.     topedge  [1] : E.UWORD;
  640.     width    [2] : E.UWORD;
  641.     height   [3] : E.UWORD;
  642.     type     [4] : E.UWORD );
  643.   -120;
  644.  
  645. LIBCALL (base : IntuiSupBasePtr) CreateGadgets *
  646.   ( ri       [8] : RenderInfoPtr;
  647.     VAR gd   [9] : GadgetData;
  648.     hoffset  [0] : INTEGER;
  649.     voffset  [1] : INTEGER;
  650.     lta     [10] : TextArrayPtr )
  651.   : GadgetList;
  652.   -126;
  653. LIBCALL (base : IntuiSupBasePtr) FreeGadgets *
  654.   ( gl [8] : GadgetList );
  655.   -132;
  656. LIBCALL (base : IntuiSupBasePtr) DisplayGadgets *
  657.   ( win [8] : I.WindowPtr;
  658.     gl  [9] : GadgetList );
  659.   -138;
  660. LIBCALL (base : IntuiSupBasePtr) RefreshGadgets *
  661.   ( gl [8] : GadgetList );
  662.   -144;
  663. LIBCALL (base : IntuiSupBasePtr) ModifyGadget *
  664.   ( gl        [8] : GadgetList;
  665.     dataentry [0] : E.UWORD;
  666.     leftedge  [1] : LONGINT;
  667.     topedge   [2] : LONGINT;
  668.     width     [3] : E.ULONG;
  669.     height    [4] : E.ULONG );
  670.   -150;
  671. LIBCALL (base : IntuiSupBasePtr) SetGadgetAttributes *
  672.   ( gl        [8] : GadgetList;
  673.     dataentry [0] : E.UWORD;
  674.     flagmask  [1] : SET;
  675.     flagbits  [2] : SET;
  676.     data1     [3] : SYS.LONGWORD;
  677.     data2     [4] : SYS.LONGWORD;
  678.     data3     [9] : SYS.LONGWORD )
  679.   : E.ULONG;
  680.   -156;
  681. LIBCALL (base : IntuiSupBasePtr) ActivateInputGadget *
  682.   ( gl        [8] : GadgetList;
  683.     dataentry [0] : E.UWORD );
  684.   -162;
  685. LIBCALL (base : IntuiSupBasePtr) GadgetAddress *
  686.   ( gl        [8] : GadgetList;
  687.     dataentry [0] : E.UWORD )
  688.   : I.GadgetPtr;
  689.   -168;
  690. LIBCALL (base : IntuiSupBasePtr) RemoveGadgets *
  691.   ( gl [8] : GadgetList )
  692.   : I.WindowPtr;
  693.   -174;
  694. LIBCALL (base : IntuiSupBasePtr) GetMsg *
  695.   ( uport [8] : E.MsgPortPtr )
  696.   : I.IntuiMessagePtr;
  697.   -180;
  698. LIBCALL (base : IntuiSupBasePtr) ReplyMsg *
  699.   ( imsg [8] : I.IntuiMessagePtr );
  700.   -186;
  701. LIBCALL (base : IntuiSupBasePtr) ConvertRawKeyToASCII *
  702.   ( imsg [8] : I.IntuiMessagePtr )
  703.   : CHAR;
  704.   -294;
  705.  
  706. LIBCALL (base : IntuiSupBasePtr) AutoRequest *
  707.   ( reqwin        [8] : I.WindowPtr;
  708.     title         [9] : E.STRPTR;
  709.     bodytext     [10] : ARRAY OF CHAR;
  710.     postext      [11] : E.STRPTR;
  711.     negtext       [0] : E.STRPTR;
  712.     posidcmpflags [1] : SET;
  713.     negidcmpflags [2] : SET;
  714.     reqflags      [3] : SET;
  715.     lta           [4] : TextArrayPtr )
  716.   : BOOLEAN;
  717.   -192;
  718. LIBCALL (base : IntuiSupBasePtr) DisplayRequester *
  719.   ( reqwin  [8] : I.WindowPtr;
  720.     VAR rd  [9] : RequesterData;
  721.     lta    [10] : TextArrayPtr )
  722.   : RequesterListPtr;
  723.   -198;
  724. LIBCALL (base : IntuiSupBasePtr) RemoveRequester *
  725.   ( rl [8] : RequesterListPtr );
  726.   -204;
  727.  
  728. LIBCALL (base : IntuiSupBasePtr) CreateMenuA *
  729.   ( ri   [8] : RenderInfoPtr;
  730.     win  [9] : I.WindowPtr;
  731.     md  [10] : ARRAY OF MenuData;
  732.     ta  [11] : G.TextAttrPtr;
  733.     lta  [0] : TextArrayPtr )
  734.   : MenuList;
  735.   -210;
  736. LIBCALL (base : IntuiSupBasePtr) CreateMenu *
  737.   ( ri   [8] : RenderInfoPtr;
  738.     win  [9] : I.WindowPtr;
  739.     md  [10] : MenuDataListPtr;
  740.     ta  [11] : G.TextAttrPtr;
  741.     lta  [0] : TextArrayPtr )
  742.   : MenuList;
  743.   -210;
  744. LIBCALL (base : IntuiSupBasePtr) AttachMenu *
  745.   ( win [8] : I.WindowPtr;
  746.     ml  [9] : MenuList );
  747.   -216;
  748. LIBCALL (base : IntuiSupBasePtr) MenuItemAddress *
  749.   ( ml      [8] : MenuList;
  750.     menunum [0] : E.UWORD )
  751.   : I.MenuItemPtr;
  752.   -222;
  753. LIBCALL (base : IntuiSupBasePtr) RemoveMenu *
  754.   ( ml [8] : MenuList )
  755.   : I.WindowPtr;
  756.   -228;
  757. LIBCALL (base : IntuiSupBasePtr) FreeMenu *
  758.   ( ml [8] : MenuList );
  759.   -234;
  760.  
  761. LIBCALL (base : IntuiSupBasePtr) OpenTextFile *
  762.   ( name           [8] : ARRAY OF CHAR;
  763.     readbuffersize [0] : E.UWORD;
  764.     linebuffersize [1] : E.UWORD;
  765.     flags          [2] : SET )
  766.   : FileDataPtr;
  767.   -240;
  768. LIBCALL (base : IntuiSupBasePtr) ReadTextLine *
  769.   ( fd [8] : FileDataPtr )
  770.   : INTEGER;
  771.   -246;
  772. LIBCALL (base : IntuiSupBasePtr) CloseTextFile *
  773.   ( fd [8] : FileDataPtr );
  774.   -252;
  775.  
  776. LIBCALL (base : IntuiSupBasePtr) BuildLanguageTextArray *
  777.   ( name    [8] : ARRAY OF CHAR;
  778.     entries [0] : E.UWORD )
  779.   : TextArrayPtr;
  780.   -258;
  781. LIBCALL (base : IntuiSupBasePtr) GetLanguageText *
  782.   ( text      [8] : ARRAY OF CHAR;
  783.     textarray [9] : TextArrayPtr )
  784.   : E.STRPTR;
  785.   -264;
  786. LIBCALL (base : IntuiSupBasePtr) FreeLanguageTextArray *
  787.   ( textarray [8] : TextArrayPtr );
  788.   -270;
  789.  
  790. LIBCALL (base : IntuiSupBasePtr) ChangeMousePointer *
  791.   ( win           [8] : I.WindowPtr;
  792.     VAR pd        [9] : PointerData;
  793.     removegadgets [0] : E.LBOOL );
  794.   -276;
  795. LIBCALL (base : IntuiSupBasePtr) ChangeMousePointerPtr *
  796.   ( win           [8] : I.WindowPtr;
  797.     pd            [9] : PointerDataPtr;
  798.     removegadgets [0] : E.LBOOL );
  799.   -276;
  800. LIBCALL (base : IntuiSupBasePtr) RestoreMousePointer *
  801.   ( win [8] : I.WindowPtr );
  802.   -282;
  803. LIBCALL (base : IntuiSupBasePtr) MoveMousePointer *
  804.   ( win    [8] : I.WindowPtr;
  805.     x      [0] : INTEGER;
  806.     y      [1] : INTEGER;
  807.     button [2] : E.LBOOL );
  808.   -288;
  809.  
  810.  
  811. (* --- C Macros defined as procedures ----------------------------------- *)
  812. (* $L+ Absolute long addressing for globals *)
  813.  
  814.  
  815. (*------------------------------------*)
  816. PROCEDURE InputAutoActivate * (next, prev : E.UWORD) : E.ULONG;
  817. (*InputAutoActivate(next,prev)  * = ((((LONG)next) << 16) | prev)   (* macro for (gdInputActivateNext | gdInpuActivatePrev) *)*)
  818.  
  819. BEGIN (* InputAutoActivate *)
  820.   RETURN (next * 10000H) + prev
  821. END InputAutoActivate;
  822.  
  823.  
  824. (* --- Library Base variable -------------------------------------------- *)
  825. (* $L- Address globals through A4 *)
  826.  
  827.  
  828. (*------------------------------------*)
  829. PROCEDURE* CloseLib ();
  830.  
  831. BEGIN (* CloseLib *)
  832.   IF base # NIL THEN E.base.CloseLibrary (base) END;
  833. END CloseLib;
  834.  
  835. (*------------------------------------*)
  836. PROCEDURE OpenLib * (mustOpen : BOOLEAN);
  837.  
  838. BEGIN (* OpenLib *)
  839.   IF base = NIL THEN
  840.     base :=
  841.       SYS.VAL
  842.         ( IntuiSupBasePtr,
  843.           E.base.OpenLibrary (Name, version) );
  844.     IF base # NIL THEN SYS.SETCLEANUP (CloseLib)
  845.     ELSIF mustOpen THEN HALT (100)
  846.     END;
  847.   END
  848. END OpenLib;
  849.  
  850.  
  851. BEGIN
  852.   base := NIL
  853. END IntuiSup.
  854.